package ar.com.jsejtman.common.service.data;

import java.util.HashMap;
import java.util.Map;

/**
 * Enumerador con las posibles direcciones de ordenamiento.
 * 
 * @author jsejtman
 */
public enum SortDirection {

	/**
	 * Ascendente.
	 */
	ASCENDING("asc"),

	/**
	 * Descendente.
	 */
	DESCENDING("desc");

	/**
	 * Posibles direcciones válidas.
	 */
	private static final Map<String, SortDirection> INSTANCES =
	        new HashMap<String, SortDirection>() {

		        private static final long serialVersionUID = 1309419960256754379L;

		        {
			        this.put(ASCENDING.value(), ASCENDING);
			        this.put(DESCENDING.value(), DESCENDING);
		        }
	        };

	/**
	 * Nombre corto del valor del enumerador.
	 */
	private String shortName;

	/**
	 * Constructor por defecto.
	 * 
	 * @param shortName Nombre corto.
	 */
	private SortDirection(final String shortName) {

		this.shortName = shortName;
	}

	/**
	 * Nombre corto del elemento del enumerador.
	 * 
	 * @return Nombre corto.
	 */
	public String value() {

		return (this.shortName);
	}

	/**
	 * Obtiene el elemento del enumerador a partir del nombre corto.
	 * 
	 * @param shortName Nombre corto.
	 * @return Elemento del enumerador (o null, si no corresponde a elemento alguno).
	 */
	public static SortDirection fromValue(final String shortName) {

		return (SortDirection.INSTANCES.get(shortName));
	}
}
